//方法一：排序取前俩数之和
int cmp(const void* pa, const void* pb){
    return (*(int*)pa - *(int*)pb);
}

int buyChoco(int* prices, int pricesSize, int money) {
    qsort(prices, pricesSize, sizeof(int), cmp);
    int ans = 0, res = 0;
    ans = prices[0] + prices[1];
    res = money - ans;
    return res >= 0 ? res : money;
}

//方法二：直接遍历找最小次小值
int buyChoco(int* prices, int pricesSize, int money) {
    int min1 = prices[0], min2 = prices[1];
    if(min1 > min2){
        int tmp = min1;
        min1 = min2;
        min2 = tmp;
    }
    for(int i = 2; i < pricesSize; i++){
        if(min1 > prices[i]){
            min2 = min1;
            min1 = prices[i];
        }else if(prices[i] < min2){
            min2 = prices[i];
        }
    }
    int res = money - min1 - min2;
    return res >= 0 ? res : money;
}

/*给你一个整数数组 prices ，它表示一个商店里若干巧克力的价格。同时给你一个整数 money ，表示你一开始拥有的钱数。

你必须购买两块巧克力，而且剩余的钱数必须是非负数。同时你想最小化购买两块巧克力的总花费。

请你返回在购买两块巧克力后，最多能剩下多少钱。如果购买任意两块巧克力都超过了你拥有的钱，请你返回 money 。注意剩余钱数必须是非负数。*/